home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Forever 4
/
Atari Forever 4.zip
/
Atari Forever 4.iso
/
SERIE_SP
/
SP_003
/
EB_EDPOV
/
EBS_STRU.ASC
< prev
next >
Wrap
Text File
|
1998-03-14
|
11KB
|
363 lines
/***********************************************************************
STRUCTURE D'UN FICHIER *.EBS : Fichier contenant une scène pour EB_EDPOV
BARANGER Emmanuel 12/12/1994
***********************************************************************/
/* Remarque importante
Toutes les valeurs qui, dans P.O.V., sont comprises entre 0.0 et 1.0 sont
ici codées sur un octet. Il faut donc faire les conversions nécessaires.
(0.0 à 1.0 devient 0 à 255)
*/
/***********************************************
Définition des termes utilisés :
CHAR 8 bits non signés (Caractères)
BYTE 8 Bits non signés
INT 16 Bits signés
UINT 16 Bits non signés
LONG 32 Bits signés
ULONG 32 Bit non signés
***********************************************/
/* Structure générale */
typedef struct
{
CHAR[4] EBPa
OBJET 0 \ Le nombre d'objet étant définit avant
... \ la définition des zones de mémoire, il
... / et possible d'avoir un nombre d'objets
OBJET N-1 / différent d'un fichier à l'autre.
INT Camera_X
INT Camera_Y
INT Camera_Z
INT Vers_X
INT Vers_Y
INT Vers_z
SOURCE /* Numéro 0 */
SOURCE /* 1 */
SOURCE /* 2 */
SOURCE /* 3 */
SOURCE /* 4 */
SOURCE /* 5 */
SOURCE /* 6 */
SOURCE /* 7 */
SOURCE /* 8 */
SOURCE /* 9 */
BYTE Brouillard_Fond /* Bit 0 à 1 : Brouillard définit
/* Bit 1 à 1 : Background définit
DEF_CO /* Définition de la couleur du brouillard
INT Distance
DEF_CO
} TOTAL;
/* Structure DEF_CO. Définition des composantes de couleurs */
typedef struct
{
INT Numero_couleur
BYTE Teinte
BYTE Luminosite
BYTE Saturation
} DEF_CO;
/* Structure DEF_COT. Définition des composantes de couleurs
plus la transparence */
typedef struct
{
INT TNumero_couleur
BYTE TTeinte
BYTE TLuminosite
BYTE TSaturation
BYTE TTransparence
} DEF_COT;
/* Structure SOURCE. Définition d'une source de lumière */
typedef struct
{
BYTE Flags
INT Source_X
INT Source_Y
INT Source_Z
BYTE Teinte_source
BYTE Luminosite_source
BYTE Saturation_source
INT Svers_X
INT Svers_Y
INT Svers_Z
INT Objet_lie
} SOURCE;
/* Structure OBJET. Définition d'un objet */
typedef struct
{
INT Numero_Primitive
INT Position_X
INT Position_Y
INT Position_Z
INT Largeur
INT Hauteur
INT Profondeur
INT Couleur_Objet
CHAR Nom_Objet[23]
INT Relation_CSG
TEXTURE
} OBJET;
/* Information sur les valeurs de "Numero_Primitive"
0 : Segment
1 : Boite
2 : Sphère
3 : Prisme
4 : Cône
5 : Tronc de cône
6 : Hémisphère
7 : Tube
8 : Disque
9 : Pyramide
10 : Colonne
11 : Plan
12 : Tor
Si Numero_Primitive>12 alors vérifier les bits 11 à 14.
Si bit 11 à 1 : Height_field
bit 12 à 1 : Extruder
bit 13 à 1 : tourner
bit 14 à 1 : Bicubic_patch
tout à 0 : Objet importer.
*/
/* Structure TEXTURE. Définition de la texture d'un objet. */
typedef struct
{
INT Texture_Numero
ECHELLE
PIGMENT /* Partie "pigment" */
NORMAL /* Partie "normal" */
FINISH /* Partie "finish" */
} TEXTURE;
/* Structure ECHELLE. Définition des "scales" d'une textures */
typedef struct
{
INT Echelle_X
INT Echelle_Y
INT Echelle_Z
} ECHELLE;
/* Structure PIGMENT. Définition de la partie "pigment" d'une texture */
typedef
{
BYTE Motifs_p
BYTE Aspect_p
BYTE Divers_p
BYTE Autres_p
BYTE Gradient
BYTE Turbulence_x_p
BYTE Turbulence_Y_p
BYTE Turbulence_Z_p
ECHELLE /* valeurs de translate */
ECHELLE /* valeurs de rotate */
ECHELLE /* valeurs de scale */
BYTE Valeur_Octaves
BYTE Valeur_Lambda
BYTE Valeur_Omega
BYTE Valeur_Frequency_p
BYTE Valeur_Phase_p
BYTE Valeur_Agate_turbulence
DEF_COLT /* Définition de la couleur */
DEF_COLT /* Couleur 1 du premier color_map */
DEF_COLT /* Couleur 2 du premier color_map */
DEF_COLT /* Couleur 3 du premier color_map */
DEF_COLT /* Couleur 4 du premier color_map */
DEF_COLT /* Couleur 5 du premier color_map */
DEF_COLT /* Couleur 6 du premier color_map */
BYTE Premier_pourcentage_color_map_1
BYTE Premier_pourcentage_color_map_2
BYTE Premier_pourcentage_color_map_3
BYTE Premier_pourcentage_color_map_4
BYTE Premier_pourcentage_color_map_5
BYTE Premier_pourcentage_color_map_6
BYTE Deuxième_pourcentage_color_map_1
BYTE Deuxième_pourcentage_color_map_2
BYTE Deuxième_pourcentage_color_map_3
BYTE Deuxième_pourcentage_color_map_4
BYTE Deuxième_pourcentage_color_map_5
BYTE Deuxième_pourcentage_color_map_6
DEF_COLT /* Couleur 1 du checker_color */
DEF_COLT /* Couleur 2 du checker_color */
DEF_COLT /* Couleur 1 de l'hexagon_color */
DEF_COLT /* Couleur 2 de l'hexagon_color */
DEF_COLT /* Couleur 3 de l'hexagon_color */
DEF_COLT /* Couleur 1 du deuxième color_map */
DEF_COLT /* Couleur 2 du deuxième color_map */
DEF_COLT /* Couleur 3 du deuxième color_map */
DEF_COLT /* Couleur 4 du deuxième color_map */
DEF_COLT /* Couleur 5 du deuxième color_map */
DEF_COLT /* Couleur 6 du deuxième color_map */
CHAR Nom_image_map[8] /* Nom de l'image mappée */
} PIGMENT;
/* Explications :
Motifs_p : Bit ON/OFF
bit 0 : Marble
bit 1 : Wood
bit 2 : Onion
bit 3 : Leopard
bit 4 : Granite
bit 5 : Bozo
bit 6 : Spotted
bit 7 : Agate
Aspects_p : Bit ON/OFF
bit 0 : Gradient
bit 1 : Turbulence
bit 2 : Octaves
bit 3 : Lambda
bit 4 : Omega
bit 5 : Frequency
bit 6 : Phase
bit 7 : Color_map
Divers_p : Bit ON/OFF
bit 0 : Image_map
bit 1 : Checker
bit 2 : Hexagon
bit 3 : Color
bit 4 : Ombre
bit 5 : Invisible Se bit ne sert pas dans les textures.
il est la pour indiquer à EB_EDPOV
si un objet doit ou non être affiché.
bit 7 et 6 : Type d'image_map
00 : GIF
01 : TGA
10 : IFF
11 : DIS
Autres_p : Bit ON/OFF
bit 0 : Translate
bit 1 : Rotate
bit 2 : Scale
bit 3 : Once
bit 4 : Interpolate (0=2, 1=4)
bit 5 : Vide pour le moment
bit 7 et 6 : Type de mapping
00 : Plan
01 : Sphère
10 : Cylindre
11 : Tor
Gradient : Bit 0 à 5 : vide pour le moment
bit 7 et 6 : Type de gradient
00 : sur X
01 : sur Y
02 : sur Z
*/
/* Structure NORMAL. Définition de la partie "normal" d'une texture. */
typedef struct
{
BYTE Motifs_n
BYTE Autres_n
BYTE Divers_n
BYTE Valeur_dump
BYTE Valeur_dent
BYTE Valeur_ripples
BYTE Valeur_Waves
BYTE Valeur_Wrinkles
BYTE Turbulence_x_n
BYTE Turbulence_Y_n
BYTE Turbulence_Z_n
BYTE Valeur_frequency_n
BYTE Valeur_phase_n
ECHELLE /* valeurs de translate */
ECHELLE /* valeurs de rotate */
ECHELLE /* valeurs de scale */
CHAR Nom_bump_map[8] /* Nom de l'image bumppée */
} NORMAL;
/* Explications :
Motifs_n : Bit ON/OFF
bit 0 : Bump
bit 1 : Dents
bit 2 : Ripples
bit 3 : Waves
bit 4 : Wrinkles
bit 5 : Turbulence
bit 6 : Frequency
bit 7 : Phase
Autres_p : Bit ON/OFF
bit 0 : Translate
bit 1 : Rotate
bit 2 : Scale
bit 3 : Once
bit 4 : Interpolate (0=2, 1=4)
bit 5 : Bump_map
bit 7 et 6 : Type de bump_map
00 : GIF
01 : TGA
10 : IFF
11 : DIS
Divers_p : Bit 0 à 5 vide pour le moment
bit 7 et 6 : Type de mapping
00 : Plan
01 : Sphère
10 : Cylindre
11 : Tor
*/
/* Structure FINISH. Définition de la partie "finish" d'une texture.
typedef struct
{
BYTE Motifs_f
BYTE Autres_f
BYTE Divers_f
BYTE Valeur_IOR
BYTE Valeur_diffuse
BYTE Valeur_reflection
BYTE Valeur_brilliance
BYTE Valeur_crand
BYTE Valeur_ambient
BYTE Valeur_specular
BYTE Valeur_roughness
BYTE Valeur_phong
BYTE Valeur_phong_size
} FINISH;
/* Explications :
Motifs_f : Bit ON/OFF
bit 0 : Diffuse
bit 1 : Reflection
bit 2 : Brilliance
bit 3 : Crand
bit 4 : Ambient
bit 5 : Specular
bit 6 : Roughness
bit 7 : Phong
Autres_f : Bit ON/OFF
bit 0 : Refraction
bit 1 : Mettalic
bit 2 et 4 : Sens du mapping dans partie "pigment"
000 : Dessous
001 : Dessus
010 : Gauche
011 : Droite
100 : Devant
101 : Derrière
bit 5 à 7 : vide pour le moment
Divers_f : lire la valeur :
0 : Rien
100 : Air
133 : Eau
150 : Verre
240 : Diamant
Autre : Valeur libre
*/